package com.ahora.org.ejb.jpa.entities;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * The persistent class for the TB_DOCUMENTO_USUARIO database table.
 * 
 */
@Entity
@Table(name = "TB_DOCUMENTO_USUARIO")
public class DocumentoUsuario implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEC_DOCUMENTO_USUARIO")
	@SequenceGenerator(name = "SEC_DOCUMENTO_USUARIO", sequenceName = "SEC_DOC_USUARIO")
	@Column(name = "ID_DOCUMENTO_USUARIO")
	private int idDocumentoUsuario;

	@Column(name = "COD_DOCUMENTO")
	private String codDocumento;

	@Lob()
	private byte[] documento;

	@Column(name = "FECHA_REGISTRO")
	private Timestamp fechaRegistro;

	@Column(name = "ID_ESTADO")
	private int idEstado;

	@Lob()
	private byte[] observacion;

	// bi-directional many-to-one association to ApelacionReconsideracion
	@OneToMany(mappedBy = "tbDocumentoUsuario")
	private Set<ApelacionReconsideracion> tbApelacionReconsideracions;

	// bi-directional many-to-one association to EstadoGenerale
	@ManyToOne
	@JoinColumn(name = "ID_ESTADO_D_R_E")
	private EstadoGenerales tbEstadoGenerale;

	// bi-directional many-to-one association to TipoDocumentosInterno
	@ManyToOne
	@JoinColumn(name = "ID_TIPO_DOCUMENTO_INTERNOS")
	private TipoDocumentosInternos tbTipoDocumentosInternos;

	// bi-directional many-to-one association to Usuario
	@ManyToOne
	@JoinColumn(name = "ID_USUARIO")
	private Usuario tbUsuario;

	// bi-directional many-to-one association to MovimientoDocumento
	@OneToMany(mappedBy = "tbDocumentoUsuario")
	private Set<MovimientoDocumento> tbMovimientoDocumentos;

	// bi-directional many-to-one association to MovimientoDocumento
	@OneToMany(mappedBy = "tbDocumentoUsuario")
	private Set<DocumentoAdiExpediente> tbDocumentoAdiExpediente;

	// METODOS QUE YO CREE
	@Transient
	private String rutaArchivo;

	@Transient
	private String cupexExpediente;

	public DocumentoUsuario() {
	}

	public DocumentoUsuario(int idDocumentoUsuario) {
		this.idDocumentoUsuario = idDocumentoUsuario;
	}

	public int getIdDocumentoUsuario() {
		return this.idDocumentoUsuario;
	}

	public void setIdDocumentoUsuario(int idDocumentoUsuario) {
		this.idDocumentoUsuario = idDocumentoUsuario;
	}

	public String getCodDocumento() {
		return this.codDocumento;
	}

	public void setCodDocumento(String codDocumento) {
		this.codDocumento = codDocumento;
	}

	public byte[] getDocumento() {
		return this.documento;
	}

	public void setDocumento(byte[] documento) {
		this.documento = documento;
	}

	public Timestamp getFechaRegistro() {
		return this.fechaRegistro;
	}

	public void setFechaRegistro(Timestamp fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public int getIdEstado() {
		return this.idEstado;
	}

	public void setIdEstado(int idEstado) {
		this.idEstado = idEstado;
	}

	public byte[] getObservacion() {
		return this.observacion;
	}

	public void setObservacion(byte[] observacion) {
		this.observacion = observacion;
	}

	public Set<ApelacionReconsideracion> getTbApelacionReconsideracions() {
		return this.tbApelacionReconsideracions;
	}

	public void setTbApelacionReconsideracions(
			Set<ApelacionReconsideracion> tbApelacionReconsideracions) {
		this.tbApelacionReconsideracions = tbApelacionReconsideracions;
	}

	public EstadoGenerales getTbEstadoGenerale() {
		return this.tbEstadoGenerale;
	}

	public void setTbEstadoGenerale(EstadoGenerales tbEstadoGenerale) {
		this.tbEstadoGenerale = tbEstadoGenerale;
	}

	public TipoDocumentosInternos getTbTipoDocumentosInternos() {
		return tbTipoDocumentosInternos;
	}

	public void setTbTipoDocumentosInternos(
			TipoDocumentosInternos tbTipoDocumentosInternos) {
		this.tbTipoDocumentosInternos = tbTipoDocumentosInternos;
	}

	public Usuario getTbUsuario() {
		return this.tbUsuario;
	}

	public void setTbUsuario(Usuario tbUsuario) {
		this.tbUsuario = tbUsuario;
	}

	public Set<MovimientoDocumento> getTbMovimientoDocumentos() {
		return this.tbMovimientoDocumentos;
	}

	public void setTbMovimientoDocumentos(
			Set<MovimientoDocumento> tbMovimientoDocumentos) {
		this.tbMovimientoDocumentos = tbMovimientoDocumentos;
	}

	public Set<DocumentoAdiExpediente> getTbDocumentoAdiExpediente() {
		return tbDocumentoAdiExpediente;
	}

	public void setTbDocumentoAdiExpediente(
			Set<DocumentoAdiExpediente> tbDocumentoAdiExpediente) {
		this.tbDocumentoAdiExpediente = tbDocumentoAdiExpediente;
	}

	public String getRutaArchivo() {
		return rutaArchivo;
	}

	public void setRutaArchivo(String rutaArchivo) {
		this.rutaArchivo = rutaArchivo;
	}

	public String getCupexExpediente() {
		return cupexExpediente;
	}

	public void setCupexExpediente(String cupexExpediente) {
		this.cupexExpediente = cupexExpediente;
	}

}